Recently, portable digital devices, such as digital cameras, motion picture experts group (MPEG) layer 3 (MP3) players, mobile phones and personal data assistants (PDAs), have come into wide use. In these digital devices, flash memories that can store a large amount of data are typically used.
Flash memories generally are low-power consuming, nonvolatile, physically stable, portable and capable of high performance. Due to these characteristics, flash memories are widely used as storage media in portable digital devices. For example, as the capacity of flash memories increases, disks are being replaced by the flash memories.
However, typical conventional flash memories do not support byte-based random access in the manner supported by memories such as static random access memories (SRAMs), dynamic random access memories (DRAMs), phase-change random access memories (PRAMs), magnetoresistive random access memories (MRAMs), and ferroelectric random access memories (FeRAM). Instead, flash memories typical read data in units of pages.
Because of their physical characteristics, flash memories typically perform erase-before-write operations. That is, before a sector of a flash memory is written, a block to which the sector belongs is erased first. Therefore, flash memories may require a longer input/output time than hard disks, which can overwrite sectors.
If the number of times a block of a typically conventional flash memory is erased approaches about 100,000, the probability that memory devices on the block will have failures may significantly increase. Due to such characteristics, when a specific sector of a flash memory is to be written, a typical memory controller searches for a vacant region in a currently allocated block or allocates a block that has been subject to fewer erasures and performs a write operation on the vacant region or the allocated block. Typically, this operation is controlled by a flash translation layer (FTL), which maps a logical sector address of a file system to a physical sector address of a flash memory.
The performance of a flash memory typically depends on an access pattern and an FTL algorithm of a file system that uses a FTL. That is, as the number of random accesses to a file system increases, the overhead of the FTL generally increases, which, in turn, may degrade the performance of a flash memory and increase the number of write/erase cycles. Consequently, the life of the flash memory may be quickly reduced.
The workload of a file system may largely be divided into access for processing user data of the file system and an access for processing metadata of the file system. Changes in the metadata of the file system may cause frequent random accesses to the flash memory.
However, for an FTL algorithm and a flash memory that perform write operations in units of blocks, even if there is only a minor change in user data or metadata, a rewrite operation typically is performed in units of blocks. Because more data than actually needs to be rewritten tends to be rewritten, a device may become overloaded.
As a temporary expedient to solve this problem, a file system, which supports block-based input/output, may be changed to support byte-based input/output. This change may require the file system to be significantly changed.